/*
 * ClinicaView.java
 */

package clinica;

import java.awt.CardLayout;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdesktop.application.Action;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import javax.swing.JDialog;
import javax.swing.JFrame;
import interfaces.*;
import javax.swing.JPanel;
import Controlador.*;
import GestorPruebas.*;
import GestorCitas.Cita;
import GestorCitas.LineaReceta;
import GestorCitas.Receta;
import GestorClinico.ControlHorario;
import GestorClinico.Direccion;
import GestorFarmacia.*;
import GestorUsuarios.IDException;
import GestorUsuarios.Paciente;
import GestorUsuarios.Usuario;
import GestorPruebas.TipoPrueba;
import interfaces.farmacia.*;
import interfaces.farmacia.principalFarmaceutico;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import javax.swing.Icon;
import javax.swing.ImageIcon;

/**
 * The application's main frame.
 */
public class ClinicaView extends FrameView {

    private Interfaces actual;

    public ClinicaView(SingleFrameApplication app) {
        super(app);

        initComponents();

        this.getFrame().setMinimumSize(new Dimension(800,600));
        
        getFrame().setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        getFrame().addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                salir();
            }
        });
        // Cuando se produce un evento de redimensión del frame
        getFrame().addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                 Interfaz.setSizeFrame(getFrame().getHeight());
            }
        });
        // Cuando se produce un evento de redimensión del frame
        getFrame().addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                 Interfaz.setSizeFrame(getFrame().getHeight());
                 // Actualizamos interfaces:
                 gestor.refresh();
                 pantalla_cita.refresh();
                 ver_datos.refresh();
            }
        });



        this.getFrame().setIconImage((new ImageIcon(getClass().getResource("/clinica/resources/Hospital-Red-icon.png")).getImage()));
        this.getFrame().setTitle("Aplicación hospital");



        gestor = new PrincipalGestor(this);
        Ventana.add(gestor,"gestor");

        medico = new PrincipalMedico(this);
        Ventana.add(medico,"medico");

        tecnico = new PrincipalTecnicoPruebas(this);
        Ventana.add(tecnico,"tecnico");

        farmacia = new principalFarmaceutico(this);
        Ventana.add(farmacia,"farmacia");

        cambiar_pass = new cambiarPass(this);
        Ventana.add(cambiar_pass,"cambiarpass");

        pantalla_cita = new pantallaCita(this);
        Ventana.add(pantalla_cita,"pantallaCita");

        seleccionar_medicamento = new seleccionarMedicamento(this);
        Ventana.add(seleccionar_medicamento,"seleccionarMedicamento");

        opciones_receta = new opcionesReceta(this);
        Ventana.add(opciones_receta, "opcionesReceta");

        listado_pedido = new ListadoPedido(this);
        Ventana.add(listado_pedido,"ListadoPedido");

        selecc_listado = new SeleccionarListado(this);
        Ventana.add(selecc_listado,"SeleccionarListado");

        cambiar_pass2 = new cambiarPass2(this);
        Ventana.add(cambiar_pass2,"cambiarpass2");

        seleccionar_medico = new seleccionarMedico(this);
        Ventana.add(seleccionar_medico,"seleccionarmedico");

        ver_datos = new verDatos(this);
        Ventana.add(ver_datos,"verdatos");

        ver_horario = new verHorario(this);
        Ventana.add(ver_horario,"verhorario");

        alta_usuario = new altaUsuario(this);
        Ventana.add(alta_usuario,"altausuario");

        alta_usuario2 = new altaUsuario2(this);
        Ventana.add(alta_usuario2,"altausuario2");

        buscar_cita = new buscarCita(this);
        Ventana.add(buscar_cita,"buscarcita");

        consultar_citas = new consultarCitas(this);
        Ventana.add(consultar_citas,"consultarcitas");

        buscar_horario = new buscarPorHorario(this);
        Ventana.add(buscar_horario,"buscarhorario");

        modificar_horario = new modificarHorario(this);
        Ventana.add(modificar_horario,"modhorario");

        fichar_entrada = new ficharEntrada(this);
        Ventana.add(fichar_entrada,"ficharentrada");

        fichar_salida = new ficharSalida(this);
        Ventana.add(fichar_salida,"ficharsalida");

        buscar_usuarios = new buscarUsuario(this);
        Ventana.add(buscar_usuarios,"buscarusuarios");

        buscar_usuarios2 = new buscarUsuario2(this);
        Ventana.add(buscar_usuarios2,"buscarusuarios2");

        modificar_usuario = new modificarUsuario(this);
        Ventana.add(modificar_usuario,"modificarusuario");

        pedir_cita = new pedirCita(this);
        Ventana.add(pedir_cita,"pedircita");

        cambiar_estado = new cambiarEstado(this);
        Ventana.add(cambiar_estado,"cambiarestado");

        mensaje_exito = new MensajeExito(this);
        Ventana.add(mensaje_exito,"exito");

        mensaje_error = new MensajeError(this);
        Ventana.add(mensaje_error,"error");

        consultar_Lote = new consultarLote(this);
        Ventana.add(consultar_Lote,"consultarLote");

        ver_lote = new verLote(this);
        Ventana.add(ver_lote,"verLote");
        
        ver_recetas = new verReceta(this);
        Ventana.add(ver_recetas,"verReceta");

        ver_receta_detallado = new verRecetaDetallado(this);
        Ventana.add(ver_receta_detallado,"verRecetaDetallado");

        seleccionar_cita = new seleccionarCita(this);
        Ventana.add(seleccionar_cita,"seleccionarCita");

        cancelar_cita = new cancelarCita(this);
        Ventana.add(cancelar_cita,"cancelarcita");

        generar_pass = new generarPass(this);
        Ventana.add(generar_pass, "generarpass");

        buscar_paciente = new buscarPaciente(this);
        Ventana.add(buscar_paciente, "buscarPaciente");

        horas_fichadas = new HorasFichadas(this);
        Ventana.add(horas_fichadas, "verfichadas");

        gestionar_entrega = new gestionarEntrega(this);
        Ventana.add(gestionar_entrega, "gestionarEntrega");

        gestionar_entrega2 = new gestionarEntrega2(this);
        Ventana.add(gestionar_entrega2, "gestionarEntrega2");

        alta_mod_medicamento = new altaYmodMedicamento(this);
        Ventana.add(alta_mod_medicamento,"altaYmodMedicamento");

        buscar_medicamento = new buscarMedicamento(this);
        Ventana.add(buscar_medicamento,"buscarMedicamento");

        buscar_medicamento2 = new buscarMedicamento2(this);
        Ventana.add(buscar_medicamento2,"buscarMedicamento2");

        mod_lote = new ModificarLote(this);
        Ventana.add(mod_lote, "modificarLote");

        alta_lote = new AltaLote(this);
        Ventana.add(alta_lote, "altaLote");

        pruebas_paciente = new ConsultarPruebasPaciente(this);
        Ventana.add(pruebas_paciente,"pruebas_paciente");

        pruebas_pendientes = new VerPruebasPendientes(this);
        Ventana.add(pruebas_pendientes,"pruebas_pendientes");

        resultado_prueba_hematologia = new AsignarResultadoPruebaHematologia(this);
        Ventana.add(resultado_prueba_hematologia,"resultado_prueba_hematologia");

        resultado_prueba_bioquimica_general = new AsignarResultadoPruebaBioquimicaGeneral(this);
        Ventana.add(resultado_prueba_bioquimica_general,"resultado_prueba_bioquimica_general");

        resultado_prueba_hemostasia = new AsignarResultadoPruebaHemostasia(this);
        Ventana.add(resultado_prueba_hemostasia,"resultado_prueba_hemostasia");

        resultado_prueba_hormonas = new AsignarResultadoPruebaHormonas(this);
        Ventana.add(resultado_prueba_hormonas,"resultado_prueba_hormonas");

        resultado_prueba_marcadores_tumorales = new AsignarResultadoPruebaMarcadoresTumorales(this);
        Ventana.add(resultado_prueba_marcadores_tumorales,"resultado_prueba_marcadores_tumorales");

        resultado_prueba_radiografia = new AsignarResultadoPruebaRadiografia(this);
        Ventana.add(resultado_prueba_radiografia,"resultado_prueba_radiografia");

        resultado_prueba_urianalisis = new AsignarResultadoPruebaUrianalisis(this);
        Ventana.add(resultado_prueba_urianalisis,"resultado_prueba_urianalisis");
        
        buscar_pruebas = new buscarPruebas(this);
        Ventana.add(buscar_pruebas,"buscar_pruebas");

        _verGraficas = new verGraficas(this);
        Ventana.add(_verGraficas,"Grafica");

        historial_paciente_detallado = new historialPacienteDetallado(this);
        Ventana.add(historial_paciente_detallado,"historial_paciente_detallado");

        ver_pruebas_pacientes = new verPruebasPacientes(this);
        Ventana.add(ver_pruebas_pacientes,"ver_pruebas_pacientes");

        editar_direccion  = new editarDireccion(ClinicaApp.getApplication().getMainFrame(), true, this);
        errores  = new erroresEntrada(ClinicaApp.getApplication().getMainFrame(), true);
        desconectar  = new mensajeDesconectar(ClinicaApp.getApplication().getMainFrame(), true);
        ayuda = new Ayuda(ClinicaApp.getApplication().getMainFrame(), true);
        contacto = new Contacto(ClinicaApp.getApplication().getMainFrame(), true);

         _selectorGraficas = new selectorGraficas(this);
        Ventana.add(_selectorGraficas,"selectorGraficas");

        alta_prueba = new altaPrueba(this);
        Ventana.add(alta_prueba,"altaPrueba");

        ver_resultados = new verResultados(this);
        Ventana.add(ver_resultados,"ver_resultados");

        ver_resultados_radiografia = new verResultadosRadiografia(this);
        Ventana.add(ver_resultados_radiografia,"ver_resultados_radiografia");

         _selectorListados = new selectorListado(this);
        Ventana.add(_selectorListados,"selectorListados");

        _verListados = new verListados(this);
        Ventana.add(_verListados,"listados");
    }

    public JPanel getPanel() {
        return Ventana;
    }

    public editarDireccion getVenanaDirecciones() {
     return editar_direccion;
    }


    public void volver(Interfaces i)  {
        actual = i;
        switch(i) {
            case PRINCIPAL_GESTOR:
                this.abrirPrincipalGestor();
            break;
            case PRINCIPAL_MEDICO:
                 this.abrirPrincipalMedico();
            break;
            case PRINCIPAL_FARMACEUTICO:
                 this.abrirPrincipalFarmaceutico();
            break;
            case PRINCIPAL_TECNICO:
                 this.abrirPrincipalTecnicoPruebas();
            break;
            case BUSCAR_POR_HORARIO:
                this.abrirBuscarPorHorario();
            break;
            case BUSCAR_USUARIOS:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarusuarios" );
                 titulo.setText("Buscar usuarios");
            break;
            case CONSULTAR_CITA:
                 abrirPrincipalGestor(); // No cambiar, lo hago a proposito
            break;
            case BUSCAR_USUARIOS2:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarusuarios2" );
                 titulo.setText("Usuarios encontrados");
            break;
            case BUSCAR_CITA:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarcita" );
                 titulo.setText("Buscar citas");
            break;
            case SELECCIONAR_LISTADO:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"SeleccionarListado" );
            break;
            case PANTALLA_CITA:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"pantallaCita" );
                 titulo.setText("Realizar consulta");
            break;
            case SELECCIONAR_MEDICAMENTO:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"seleccionarMedicamento" );
                 titulo.setText("Selección de medicamentos");
            break;
            case SELECCIONAR_CITA:
                try {this.abrirSeleccionarCita();} catch (Exception ex) {}
            break;
            case GESTIONAR_ENTREGA:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"gestionarEntrega");
                 titulo.setText("Entregas del paciente");
            break;
            case CONSULTAR_LOTE:
                 ( (CardLayout)Ventana.getLayout() ).show( Ventana,"consultarLote");
                 titulo.setText("Consultar Lotes");
            break;
            case BUSCAR_MEDICAMENTO_2:
                ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarMedicamento2");
                titulo.setText("Buscar medicamento");
            break;
             case VER_RECETAS:
                ( (CardLayout)Ventana.getLayout() ).show( Ventana,"verReceta");
                titulo.setText("Ver Receta");
                break;
            case SELECTOR_GRAFICAS:
                ( (CardLayout)Ventana.getLayout() ).show(Ventana,"selectorGraficas" );
                _selectorGraficas.rellenaDatos();
                 titulo.setText("Selector de gráficas");
            break;
            case CAMBIAR_PASS:
                ( (CardLayout)Ventana.getLayout() ).show( Ventana, "cambiarpass");
                titulo.setText("Cambiar contraseña");
            break;
            case ALTA_USUARIO:
                ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altausuario" );
                titulo.setText("Alta de usuario");
            break;
            case PRUEBAS_PACIENTE:
                ( (CardLayout)Ventana.getLayout() ).show(Ventana,"pruebas_paciente" );
                titulo.setText("Consultar Pruebas Paciente");
            break;
            case PRUEBAS_PENDIENTES:
                ( (CardLayout)Ventana.getLayout() ).show(Ventana,"pruebas_pendientes" );
                titulo.setText("Ver Pruebas Pendientes");
                break;
            case VER_PRUEBAS_PACIENTES:
                ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ver_pruebas_pacientes" );
                titulo.setText("Pruebas pacientes");
                break;
            case HISTORIAL:
                ( (CardLayout)Ventana.getLayout() ).show(Ventana,"historial_paciente_detallado" );
                titulo.setText("Historial Paciente Detallado");
                actual = Interfaces.HISTORIAL;
                break;
            case SELECTOR_LISTADOS:
                ( (CardLayout)Ventana.getLayout() ).show(Ventana,"selectorListados" );
                _selectorListados.rellenaDatos();
                 titulo.setText("Selector de listados");
                break;
            case VER_RESULTADOS_RADIOGRAFIA:
                ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ver_resultados_radiografia" );
                titulo.setText("Resultados de la prueba");
                break;
        }
    }

    public void setTitulo(String titu) {
        titulo.setText(titu);
    }

    public void setIconoTitulo(Icon icono) {
        jLabel1.setIcon(icono);
    }

    public void limpiaErrores() {
        errores.limpiaErrores();
    }

    public void addError(String s) {
        errores.addError(s);
    }

    public void muestraListaErrores() {
        errores.setVisible(true);
    }

    public void abrirPrincipalGestor() {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"gestor" );
        titulo.setText("Menú gestor");
        actual = Interfaces.PRINCIPAL_GESTOR;
    }

    public void abrirPrincipalMedico() {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"medico" );
        titulo.setText("Menú médico");
        actual = Interfaces.PRINCIPAL_MEDICO;
    }

    public void abrirPrincipalFarmaceutico() {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"farmacia" );
        titulo.setText("Menú farmacéutico");
        actual = Interfaces.PRINCIPAL_FARMACEUTICO;
    }

    public void abrirPrincipalTecnicoPruebas() {
        ( (CardLayout)Ventana.getLayout() ).show(Ventana,"tecnico" );
        titulo.setText("Menú técnico pruebas");
        actual = Interfaces.PRINCIPAL_TECNICO;
    }

    public void abrirVerHorario(Usuario u) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"verhorario" );
        ver_horario.rellenaDatos(u,actual);
        titulo.setText("Ver mi horario");
        actual = Interfaces.VER_HORARIO;
    }

    public void abrirModificarHorario(Usuario u) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"modhorario" );
        modificar_horario.rellenaDatos(u,actual);
        titulo.setText("Modificar horario");
        actual = Interfaces.MODIFICAR_HORARIO;
    }

    public void abrirAltaUsuario() {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altausuario" );
        alta_usuario.limpiaDatos();
        titulo.setText("Alta de usuario");
        actual = Interfaces.ALTA_USUARIO;
    }

    public void abrirAltaUsuario2(Usuario u, String p, Direccion [] d) throws SQLException, IOException, ClassNotFoundException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altausuario2" );
        alta_usuario2.rellenaDatos(u,p,d);
        titulo.setText("Alta de usuario");
    }

    public void abrirVerDatos(Usuario us) throws SQLException, IOException, ClassNotFoundException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"verdatos" );
        ver_datos.rellenaDatos(us,actual);
        titulo.setText("Ver datos");
        actual = Interfaces.VER_DATOS;
    }

    public void abrirCancelarCita(Cita c) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"cancelarcita" );
        cancelar_cita.rellenaDatos(actual, c);
        titulo.setText("Cancelar cita");
    }

    public void abrirCambiarPass() {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"cambiarpass" );
        cambiar_pass.rellenaDatos(Controlador.getUsuarioActivo(),actual);
        titulo.setText("Cambiar mi contraseña");
        actual = Interfaces.CAMBIAR_PASS;
    }

    public void abrirCambiarPass2(String p, Interfaces i) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"cambiarpass2" );
        cambiar_pass2.rellenaDatos(Controlador.getUsuarioActivo(),p,i);
        titulo.setText("Cambiar mi contraseña");
        actual = Interfaces.CAMBIAR_PASS_2;
    }

    public void abrirGenerarPass(Usuario u) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"generarpass" );
        generar_pass.setUsuario(u);
        titulo.setText("Generar contraseña");
    }

    public void abrirBuscarCitas() {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarcita" );
        buscar_cita.rellenaDatos();
        titulo.setText("Buscar citas");
        actual = Interfaces.BUSCAR_CITA;
    }

    public void abrirConsultarCitas(Cita [] c, Interfaces ant) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"consultarcitas" );
        consultar_citas.rellenaDatos(c, ant);
        titulo.setText("Consular citas");
        actual = Interfaces.CONSULTAR_CITA;
    }

    public void abrirBuscarUsuarios() throws SQLException, IOException, ClassNotFoundException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarusuarios" );
        buscar_usuarios.rellenaRoles();
        buscar_usuarios.limpiaDatos();
        titulo.setText("Buscar usuarios");
        actual = Interfaces.BUSCAR_USUARIOS;
    }

    public void abrirBuscarUsuarios2(Usuario [] us, Interfaces anterior) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarusuarios2" );
        buscar_usuarios2.rellenaUsuarios(us, anterior);
        titulo.setText("Usuarios encontrados");
        actual = Interfaces.BUSCAR_USUARIOS2;
    }

    public void abrirVerFichadas(Usuario us, ControlHorario [] c)  {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"verfichadas" );
        horas_fichadas.rellenaDatos(us, c);
        titulo.setText("Ver horas fichadas");
    }

    public void abrirBuscarPorHorario() {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarhorario" );
        titulo.setText("Buscar por horario");
    }

    public void abrirModificarUsuario(Usuario u) throws SQLException, IOException, ClassNotFoundException {
        modificar_usuario.rellenaDatos(u);
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"modificarusuario" );
        titulo.setText("Modificar usuario");
    }

    public void abrirFicharEntrada(Interfaces ant) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ficharentrada" );
        fichar_entrada.setFecha(Calendar.getInstance().getTime(),ant);
        titulo.setText("Fichar entrada");
        actual = Interfaces.FICHAR_ENTRADA;
    }

    public void abrirFicharSalida(Interfaces ant) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ficharsalida" );
        fichar_salida.setFecha(Calendar.getInstance().getTime(),ant);
        titulo.setText("Fichar salida");
        actual = Interfaces.FICHAR_SALIDA;
    }

    public void abrirPedirCita(Interfaces ant, Usuario u) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"pedircita" );
        pedir_cita.rellenaDatos(actual, u);
        pedir_cita.cargaDisponibles();
        titulo.setText("Pedir cita");
    }

    public void abrirSeleccionarMedico(Cita c) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"seleccionarmedico" );
        seleccionar_medico.rellenarDatos(c);
        titulo.setText("Seleccionar médico");
    }

    public void abrirCambiarEstado(Usuario u) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"cambiarestado" );
        cambiar_estado.rellenaDatos(u);
        titulo.setText("Cambiar estado");
    }

    public void abrirMensajeExito(String mensaje, Interfaces anterior) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"exito" );
        mensaje_exito.setMensaje(mensaje, anterior);
        titulo.setText("Éxito en la operación");
    }

    public void abrirMensajeExito(String mensaje, Interfaces anterior, Medicamento m) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"exito" );
        mensaje_exito.setMensaje(mensaje, anterior, m);
        titulo.setText("Éxito en la operación");
    }

    public void abrirMensajeError(String mensaje, Interfaces anterior) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"error" );
        mensaje_error.setMensaje(mensaje, anterior);
        titulo.setText("Fracaso en la operación");
    }
   

    public void abrirConsultarLote(Integer id_med, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
    ( (CardLayout)Ventana.getLayout() ).show( Ventana,"consultarLote" );
    consultar_Lote.rellenaDatos(id_med, anterior);
    titulo.setText("Consulta de Lotes");
    actual = Interfaces.CONSULTAR_LOTE;
    }


    public void abrirVerLote(Lote lote, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
    ( (CardLayout)Ventana.getLayout() ).show( Ventana,"verLote" );
    ver_lote.rellenaDatos(lote,anterior);
    titulo.setText("Consulta del Lote");
    }
    
    public void abrirVerRecetas(Integer id_paciente, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"verReceta" );
        ver_recetas.rellenaDatos(id_paciente , anterior);
        titulo.setText("Ver Recetas");
        actual = Interfaces.VER_RECETAS;
    }

    public void abrirVerRecetasDetallado(Receta receta, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"verRecetaDetallado" );
        ver_receta_detallado.rellenaDatos(receta,anterior);
        titulo.setText("Ver Recetas Detallado");
        actual = Interfaces.VER_RECETAS_DETALLADO;
    }

    public void abrirSeleccionarListado(Interfaces anterior) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"SeleccionarListado" );
        selecc_listado.limpiarDatos();
        titulo.setText("Seleccionar listado");
        actual = Interfaces.SELECCIONAR_LISTADO;
    }

    public void abrirListadoStock(Interfaces anterior, Lote [] lote) throws SQLException, IOException, ClassNotFoundException {
         ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ListadoPedido" );
         listado_pedido.limpiarDatos();
        listado_pedido.rellenaDatosStock(lote, null, "Stock total");
        titulo.setText("Stock total");
        actual = Interfaces.LISTADO_PEDIDO;
    }

     public void abrirListadoCaducados(Interfaces anterior, Lote [] lote, Date fecha) throws SQLException, IOException, ClassNotFoundException {
         ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ListadoPedido" );
         listado_pedido.limpiarDatos();
        listado_pedido.rellenaDatos(lote, fecha, "Lotes caducados");
        titulo.setText("Lotes caducados");
        actual = Interfaces.LISTADO_PEDIDO;
    }

    public void abrirListadoBajasExistencias(Interfaces anterior, Lote [] lote) throws SQLException, IOException, ClassNotFoundException {
         ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ListadoPedido" );
        listado_pedido.limpiarDatos();
        listado_pedido.rellenaDatos(lote, null, "Lotes con bajas existencias");
        titulo.setText("Lotes con bajas existencias");
        actual = Interfaces.LISTADO_PEDIDO;
    }

    public void abrirListadoPedido(Interfaces anterior, Lote [] lote) throws SQLException, IOException, ClassNotFoundException {
         ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ListadoPedido" );
         listado_pedido.limpiarDatos();
         listado_pedido.rellenaDatos(lote, null, "Pedido de lotes para completar el stock");
         titulo.setText("Pedido de lotes para completar el stock");
         actual = Interfaces.LISTADO_PEDIDO;
    }

    public void abrirSeleccionarCita() throws NoSuchAlgorithmException, IOException, ClassNotFoundException, SQLException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"seleccionarCita" );
        seleccionar_cita.rellenarCitas();
        titulo.setText("Pasar consulta");
        actual =Interfaces.SELECCIONAR_CITA;
    }

    public void abrirPantallaCita(Cita cita, Interfaces anterior) throws NoSuchAlgorithmException, IOException, ClassNotFoundException, SQLException, ParseException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"pantallaCita" );
        pantalla_cita.rellenaDatos(cita,anterior);
        titulo.setText("Realizar consulta");
        actual =Interfaces.PANTALLA_CITA;
    }
    public void abrirPantallaCita2(LineaReceta l) throws IOException, ClassNotFoundException, SQLException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"pantallaCita" );
        pantalla_cita.rellenaDatosReceta(l);
        titulo.setText("Realizar consulta");
        actual =Interfaces.PANTALLA_CITA;
    }

    public void abrirSeleccionarMedicamento(Interfaces anterior) throws SQLException, IOException, ClassNotFoundException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"seleccionarMedicamento" );
        seleccionar_medicamento.rellenarMedicamentos(anterior);
        titulo.setText("Selección de medicamentos");
        actual =Interfaces.SELECCIONAR_MEDICAMENTO;
    }

    public void abrirOpcionesReceta(Integer id_medicamento, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"opcionesReceta" );
        opciones_receta.rellenaDatos(id_medicamento,anterior);
        titulo.setText("Opciones para el recetado");
        actual =Interfaces.OPCIONES_RECETA;
    }

    public void abrirBuscarPaciente() throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarPaciente");
        buscar_paciente.rellenarDatos();
        titulo.setText("Búsqueda de pacientes");
    }

    public void abrirGestionarEntrega(Usuario u, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"gestionarEntrega");
        gestionar_entrega.rellenaDatos(u, anterior);
        titulo.setText("Entregas del paciente");
    }

    public void abrirGestionarEntrega2(Entrega e, Usuario u, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"gestionarEntrega2");
        gestionar_entrega2.rellenaDatos(e, u, anterior);
        titulo.setText("Realizar entrega");
    }

    public void abrirAltaYModMedicamento(Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altaYmodMedicamento");
        alta_mod_medicamento.rellenaDatos1(anterior);
        titulo.setText("Alta de medicamento");
    }

    public void abrirAltaYModMedicamento2(Medicamento m, Interfaces anterior, Medicamento busqueda) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altaYmodMedicamento");
        alta_mod_medicamento.rellenaDatos2(m, anterior, busqueda);
        titulo.setText("Modificar medicamento");
    }

    public void abrirAltaYModMedicamento3(Medicamento m, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altaYmodMedicamento");
        alta_mod_medicamento.rellenaDatos3(m, anterior);
        titulo.setText("Ver medicamento");
    }

    public void abrirBuscarMedicamento() throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarMedicamento");
        titulo.setText("Buscar Medicamento");
    }

    public void abrirBuscarMedicamento2(Medicamento m,Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscarMedicamento2");
        buscar_medicamento2.rellenaDatos(m,anterior);
        titulo.setText("Buscar medicamento");
    }

    public void abrirModificarLote(Lote lote, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, ParseException, NoSuchAlgorithmException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"modificarLote");
        mod_lote.limpiaEntradas();
        mod_lote.rellenaDatos(lote, anterior);
        titulo.setText("Modificar lote");
        actual = Interfaces.MODIFICAR_LOTE;
    }

    public void abrirAltaLote(Medicamento m, Interfaces anterior) {
    ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altaLote");
        alta_lote.limpiaDatos();
        alta_lote.rellenaDatos(m, anterior);
        titulo.setText("Alta lote");
        actual = Interfaces.ALTA_LOTE;
    }

     public void abrirConsultarPruebasPaciente(Integer id_paciente,Date fecha1,Date fecha2,TipoPrueba tipo,Interfaces anterior) throws GestorUsuarios.IDException,SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"pruebas_paciente" );
        pruebas_paciente.rellenaDatos(id_paciente,fecha1,fecha2,tipo,anterior,Interfaces.PRUEBAS_PACIENTE);
        titulo.setText("Consultar Pruebas Paciente");
        actual = Interfaces.PRUEBAS_PACIENTE;
    }

      public void abrirVerPruebasPendientes(Interfaces anterior) throws GestorUsuarios.IDException,SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"pruebas_pendientes" );
        pruebas_pendientes.rellenaDatos(anterior,Interfaces.PRUEBAS_PENDIENTES);
        titulo.setText("Ver Pruebas Pendientes");
        actual = Interfaces.PRUEBAS_PENDIENTES;
    }

     public void abrirBuscarPruebas(Interfaces anterior) {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"buscar_pruebas" );
        buscar_pruebas.rellenaDatos(anterior);
        titulo.setText("Buscar Pruebas");
        actual = Interfaces.BUSCAR_PRUEBAS;
    }
     public void abrirAsignarResultadoPruebaHematologia(Prueba pr,Interfaces _anterior)throws SQLException,IOException, ClassNotFoundException, NoSuchAlgorithmException{
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"resultado_prueba_hematologia" );
        resultado_prueba_hematologia.limpiaEntradas(pr,_anterior);
        titulo.setText("Asignar Resultado Prueba Hematologia");
        actual = Interfaces.ASIGNAR_RESULTADO_PRUEBA_HEMATOLOGIA;
    }

     public void abrirAsignarResultadoPruebaBioquimicaGeneral(Prueba pr,Interfaces _anterior)throws SQLException,IOException, ClassNotFoundException, NoSuchAlgorithmException{
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"resultado_prueba_bioquimica_general" );
        resultado_prueba_bioquimica_general.limpiaEntradas(pr,_anterior);
        titulo.setText("Asignar Resultado Prueba Bioquimica General");
        actual = Interfaces.ASIGNAR_RESULTADO_PRUEBA_BIOQUIMICA_GENERAL;
    }
     public void abrirAsignarResultadoPruebaHemostasia(Prueba pr,Interfaces _anterior)throws SQLException,IOException, ClassNotFoundException, NoSuchAlgorithmException{
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"resultado_prueba_hemostasia" );
        resultado_prueba_hemostasia.limpiaEntradas(pr,_anterior);
        titulo.setText("Asignar Resultado Prueba Hemostasia");
        actual = Interfaces.ASIGNAR_RESULTADO_PRUEBA_HEMOSTASIA;
    }
     public void abrirAsignarResultadoPruebaHormonas(Prueba pr,Interfaces _anterior)throws SQLException,IOException, ClassNotFoundException, NoSuchAlgorithmException{
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"resultado_prueba_hormonas" );
        resultado_prueba_hormonas.limpiaEntradas(pr,_anterior);
        titulo.setText("Asignar Resultado Prueba Hormonas");
        actual = Interfaces.ASIGNAR_RESULTADO_PRUEBA_HORMONAS;
    }
     public void abrirAsignarResultadoPruebaMarcadoresTumorales(Prueba pr,Interfaces _anterior)throws SQLException,IOException, ClassNotFoundException, NoSuchAlgorithmException{
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"resultado_prueba_marcadores_tumorales" );
        resultado_prueba_marcadores_tumorales.limpiaEntradas(pr,_anterior);
        titulo.setText("Asignar Resultado Prueba Marcadores Tumorales");
        actual = Interfaces.ASIGNAR_RESULTADO_PRUEBA_MARCADOS_TUMORALES;
    }
     public void abrirAsignarResultadoPruebaRadiografia(Prueba pr,Interfaces _anterior)throws SQLException,IOException, ClassNotFoundException, NoSuchAlgorithmException{
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"resultado_prueba_radiografia" );
        resultado_prueba_radiografia.limpiaEntradas(pr,_anterior);
        titulo.setText("Asignar Resultado Prueba Radiografia");
        actual = Interfaces.ASIGNAR_RESULTADO_PRUEBA_RADIOGRAFIA;
    }
     public void abrirAsignarResultadoPruebaUrianalisis(Prueba pr,Interfaces _anterior)throws SQLException,IOException, ClassNotFoundException, NoSuchAlgorithmException{
    ( (CardLayout)Ventana.getLayout() ).show( Ventana,"resultado_prueba_urianalisis" );
        resultado_prueba_urianalisis.limpiaEntradas(pr,_anterior);
        titulo.setText("Asignar Resultado Prueba Urianalisis");
        actual = Interfaces.ASIGNAR_RESULTADO_PRUEBA_URIANALISIS;
    }

     public void abrirVerGrafica(JPanel grafica, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"Grafica" );
        _verGraficas.rellenaDatos(grafica, anterior);
        titulo.setText("Gráficas");
        actual =Interfaces.VER_GRAFICA;
    }

      public void abrirHistorialPacienteDetallado( Cita c, Interfaces anterior) throws GestorUsuarios.IDException,SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"historial_paciente_detallado" );
        historial_paciente_detallado.rellenaDatos(c,anterior);
        titulo.setText("Historial Paciente Detallado");
        actual = Interfaces.HISTORIAL;
    }

      public void abrirSelectorGraficas( Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"selectorGraficas" );
        _selectorGraficas.rellenaDatos();
        titulo.setText("Selector de gráficas");
        actual =Interfaces.SELECTOR_GRAFICAS;
    }

    public void abrirPantallaCita3(Prueba p) throws IOException, ClassNotFoundException, SQLException {
        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"pantallaCita" );
        pantalla_cita.rellenaDatosPrueba(p);
        titulo.setText("Realizar consulta");
        actual = Interfaces.PANTALLA_CITA;
    }

    public void abrirAltaPrueba( Cita c , Prueba p , Interfaces ant )
            throws IOException, ClassNotFoundException, SQLException {

        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"altaPrueba" );
        alta_prueba.rellenaDatos(c,p,ant);
        titulo.setText("Concertar prueba");
        actual = Interfaces.ALTA_PRUEBA;
    }

    public void abrirVerPruebasPacientes( )
            throws IOException, ClassNotFoundException, SQLException, NoSuchAlgorithmException, ParseException {

        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ver_pruebas_pacientes" );
        ver_pruebas_pacientes.rellenaDatos();
        titulo.setText("Pruebas pacientes");
        actual = Interfaces.VER_PRUEBAS_PACIENTES;
    }

    public void abrirVerResultados( Prueba p , Interfaces ant)
            throws IOException, ClassNotFoundException, SQLException, NoSuchAlgorithmException, ParseException {

        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ver_resultados" );
        ver_resultados.rellenaDatos(p,ant);
        titulo.setText("Resultados de la prueba");
        actual = Interfaces.VER_RESULTADOS;
    }

    public void abrirVerResultadosRadiografia( Prueba p , Interfaces ant)
            throws IOException, ClassNotFoundException, SQLException, NoSuchAlgorithmException, ParseException {

        ( (CardLayout)Ventana.getLayout() ).show( Ventana,"ver_resultados_radiografia" );
        ver_resultados_radiografia.rellenaDatos(p,ant);
        titulo.setText("Resultados de la prueba");
        actual = Interfaces.VER_RESULTADOS_RADIOGRAFIA;
    }

    
    @Action
    public void showAboutBox() {
        if (aboutBox == null) {
            JFrame mainFrame = ClinicaApp.getApplication().getMainFrame();
            aboutBox = new ClinicaAboutBox(mainFrame);
            aboutBox.setLocationRelativeTo(mainFrame);
        }
        ClinicaApp.getApplication().show(aboutBox);
    }


      public void abrirSelectorListados( Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"selectorListados" );
        _selectorListados.rellenaDatos();
        titulo.setText("Selector de Listados");
        actual =Interfaces.SELECTOR_LISTADOS;
    }


     public void abrirVerListados(ArrayList<ArrayList<String>> grafica, String titulo, String campo1, String campo2, Interfaces anterior) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException, ParseException {
    ( (CardLayout)Ventana.getLayout() ).show(Ventana,"listados" );
        _verListados.rellenaDatos(grafica, campo1, campo2, anterior);
        this.titulo.setText("Listados de "+titulo);
        actual =Interfaces.VER_LISTADOS;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jPanel6 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        titulo = new javax.swing.JLabel();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        Ventana = new javax.swing.JPanel();

        mainPanel.setName("mainPanel"); // NOI18N
        mainPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        mainPanel.setLayout(new java.awt.GridLayout(1, 0));

        jScrollPane1.setMinimumSize(new java.awt.Dimension(800, 600));
        jScrollPane1.setName("jScrollPane1"); // NOI18N
        jScrollPane1.setPreferredSize(new java.awt.Dimension(800, 600));

        jPanel6.setMinimumSize(new java.awt.Dimension(800, 600));
        jPanel6.setName("jPanel6"); // NOI18N
        jPanel6.setPreferredSize(new java.awt.Dimension(800, 600));
        jPanel6.setRequestFocusEnabled(false);

        jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel1.setMinimumSize(new java.awt.Dimension(780, 100));
        jPanel1.setName("jPanel1"); // NOI18N
        jPanel1.setPreferredSize(new java.awt.Dimension(780, 100));

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(clinica.ClinicaApp.class).getContext().getResourceMap(ClinicaView.class);
        jLabel1.setIcon(resourceMap.getIcon("jLabel1.icon")); // NOI18N
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        titulo.setFont(resourceMap.getFont("titulo.font")); // NOI18N
        titulo.setText(resourceMap.getString("titulo.text")); // NOI18N
        titulo.setName("titulo"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(clinica.ClinicaApp.class).getContext().getActionMap(ClinicaView.class, this);
        jButton3.setAction(actionMap.get("salir")); // NOI18N
        jButton3.setIcon(resourceMap.getIcon("jButton3.icon")); // NOI18N
        jButton3.setText(resourceMap.getString("jButton3.text")); // NOI18N
        jButton3.setName("jButton3"); // NOI18N

        jButton4.setAction(actionMap.get("abrirAyuda")); // NOI18N
        jButton4.setIcon(resourceMap.getIcon("jButton4.icon")); // NOI18N
        jButton4.setText(resourceMap.getString("jButton4.text")); // NOI18N
        jButton4.setName("jButton4"); // NOI18N

        jButton1.setAction(actionMap.get("abrirContacto")); // NOI18N
        jButton1.setIcon(resourceMap.getIcon("jButton1.icon")); // NOI18N
        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
        jButton1.setName("jButton1"); // NOI18N

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addComponent(titulo, javax.swing.GroupLayout.DEFAULT_SIZE, 373, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton3)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(titulo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 73, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jButton1)
                        .addComponent(jButton4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap(12, Short.MAX_VALUE))
        );

        Ventana.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        Ventana.setMinimumSize(new java.awt.Dimension(780, 472));
        Ventana.setName("Ventana"); // NOI18N
        Ventana.setPreferredSize(new java.awt.Dimension(780, 472));
        Ventana.setLayout(new java.awt.CardLayout());

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 786, Short.MAX_VALUE)
                    .addComponent(Ventana, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 786, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(Ventana, javax.swing.GroupLayout.DEFAULT_SIZE, 476, Short.MAX_VALUE)
                .addContainerGap())
        );

        jScrollPane1.setViewportView(jPanel6);

        mainPanel.add(jScrollPane1);

        setComponent(mainPanel);
    }// </editor-fold>//GEN-END:initComponents

    @Action
    public void salir() {
        desconectar.setVisible(true);
    }

    @Action
    public void abrirAyuda() {
        switch(actual) {
            case PRINCIPAL_GESTOR:
                ayuda.setAyuda("menu_gestor.html");
                break;
            case VER_DATOS:
                ayuda.setAyuda("ver_datos.html");
                break;
            case CAMBIAR_PASS:
                ayuda.setAyuda("cambiar_contraseña.html");
                break;
            case CAMBIAR_PASS_2:
                ayuda.setAyuda("confirmacion_cambio_contraseña.html");
                break;
            case ALTA_USUARIO:
                ayuda.setAyuda("alta_usuario.html");
                break;
            case BUSCAR_CITA:
                ayuda.setAyuda("buscar_citas.html");
                break;
            case VER_HORARIO:
                ayuda.setAyuda("ver_horario.html");
                break;
            case MODIFICAR_HORARIO:
                ayuda.setAyuda("modificar_horario.html");
                break;
            case BUSCAR_USUARIOS:
                ayuda.setAyuda("buscar_usuarios.html");
                break;
            case BUSCAR_USUARIOS2:
                ayuda.setAyuda("usuarios_encontrados.html");
                break;
            case PANTALLA_CITA:
                ayuda.setAyuda("pantalla_cita.html");
                break;
            case SELECCIONAR_MEDICAMENTO:
                ayuda.setAyuda("seleccionar_medicamento.html");
                break;
            case OPCIONES_RECETA:
                ayuda.setAyuda("opciones_receta.html");
                break;
            case SELECTOR_GRAFICAS:
                ayuda.setAyuda("SelectorGraficas.html");
                break;
            case VER_GRAFICA:
                ayuda.setAyuda("Grafica.html");
                break;
            case VER_RECETAS:
                ayuda.setAyuda("verReceta.html");
            break;
            case VER_RECETAS_DETALLADO:
                ayuda.setAyuda("verRecetaDetallada.html");
            break;
            case CONSULTAR_LOTE:
                ayuda.setAyuda("consultarLote.html");
            break;
            case MODIFICAR_LOTE:
                ayuda.setAyuda("ModificarLote.html");
            break;
            case SELECCIONAR_LISTADO:
                ayuda.setAyuda("SeleccionarListado.html");
            break;
            case LISTADO_PEDIDO:
                ayuda.setAyuda("ListadoPedido.html");
            break;
            case ALTA_LOTE:
                ayuda.setAyuda("AltaLote.html");
            break;
            case FICHAR_ENTRADA:
                ayuda.setAyuda("fichar.html");
            break;
            case FICHAR_SALIDA:
                ayuda.setAyuda("fichar.html");
            break;
            case PEDIR_CITA:
                ayuda.setAyuda("pedirCita.html");
            break;
            case CONSULTAR_CITA:
                ayuda.setAyuda("consultarCita.html");
            break;
            case CANCELAR_CITA:
                ayuda.setAyuda("cancelarCita.html");
            break;
            case PRINCIPAL_MEDICO:
                ayuda.setAyuda("principalMedico.html");
                break;
            case SELECTOR_LISTADOS:
                ayuda.setAyuda("SelectorListados.html");
                break;
            case VER_LISTADOS:
                ayuda.setAyuda("Listado.html");
                break;
            case VER_PRUEBAS_PACIENTES:
                ayuda.setAyuda("verPruebasPacientes.html");
                break;
            case HISTORIAL:
                ayuda.setAyuda("citaDetallada.html");
                break;
            case ALTA_PRUEBA:
                ayuda.setAyuda("altaPrueba.html");
                break;
            case PRINCIPAL_TECNICO:
                ayuda.setAyuda("principalTecnicoPruebas.html");
                break;
            case PRUEBAS_PENDIENTES:
                ayuda.setAyuda("verPruebasPendientes.html");
                break;
            case PRUEBAS_PACIENTE:
                ayuda.setAyuda("consultarPruebasPaciente.html");
                break;
            case BUSCAR_PRUEBAS:
                ayuda.setAyuda("buscarPruebas.html");
                break;
            case ASIGNAR_RESULTADO_PRUEBA_RADIOGRAFIA:
                ayuda.setAyuda("asignarResultadoPruebaRadiografia.html");
                break;
            case ASIGNAR_RESULTADO_PRUEBA_HEMATOLOGIA:
                ayuda.setAyuda("asignarResultadoPruebaGenerico.html");
                break;
            case ASIGNAR_RESULTADO_PRUEBA_HEMOSTASIA:
                ayuda.setAyuda("asignarResultadoPruebaGenerico.html");
                break;
            case ASIGNAR_RESULTADO_PRUEBA_HORMONAS:
                ayuda.setAyuda("asignarResultadoPruebaGenerico.html");
                break;
            case ASIGNAR_RESULTADO_PRUEBA_MARCADOS_TUMORALES:
                ayuda.setAyuda("asignarResultadoPruebaGenerico.html");
                break;
            case ASIGNAR_RESULTADO_PRUEBA_URIANALISIS:
                ayuda.setAyuda("asignarResultadoPruebaGenerico.html");
                break;
            case ASIGNAR_RESULTADO_PRUEBA_BIOQUIMICA_GENERAL:
                ayuda.setAyuda("asignarResultadoPruebaGenerico.html");
                break;
            default:
                ayuda.setAyuda("no_rellenada.html");
                break;
        }

        ayuda.setVisible(true);
    }

    @Action
    public void abrirContacto() {
        contacto.setVisible(true);
    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel Ventana;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JLabel titulo;
    // End of variables declaration//GEN-END:variables

    private Contacto contacto;
    private cancelarCita cancelar_cita;
    private seleccionarMedico seleccionar_medico;
    private consultarCitas consultar_citas;
    private principalFarmaceutico farmacia;
    private MensajeExito mensaje_exito;
    private MensajeError mensaje_error;
    private buscarUsuario buscar_usuarios;
    private buscarUsuario2 buscar_usuarios2;
    private HorasFichadas horas_fichadas;
    private buscarCita buscar_cita;
    private PrincipalGestor gestor;
    private PrincipalMedico medico;
    private PrincipalTecnicoPruebas tecnico;
    private verDatos ver_datos;
    private verHorario ver_horario;
    private cambiarPass cambiar_pass;
    private cambiarPass2 cambiar_pass2;
    private altaUsuario alta_usuario;
    private altaUsuario2 alta_usuario2;
    private editarDireccion editar_direccion;
    private buscarPorHorario buscar_horario;
    private ficharEntrada fichar_entrada;
    private ficharSalida fichar_salida;
    private modificarUsuario modificar_usuario;
    private cambiarEstado cambiar_estado;
    private modificarHorario modificar_horario;
    private generarPass generar_pass;
    private pedirCita pedir_cita;
    private JDialog aboutBox;
    private erroresEntrada errores;
    private Ayuda ayuda;
    private mensajeDesconectar desconectar;
    private ListadoPedido listado_pedido;
    private SeleccionarListado selecc_listado;
    private consultarLote consultar_Lote;
    private verLote ver_lote;
    private verReceta ver_recetas;
    private verRecetaDetallado ver_receta_detallado;
    private seleccionarCita seleccionar_cita;
    private pantallaCita pantalla_cita;
    private seleccionarMedicamento seleccionar_medicamento;
    private opcionesReceta opciones_receta;
    private gestionarEntrega gestionar_entrega;
    private gestionarEntrega2 gestionar_entrega2;
    private altaYmodMedicamento alta_mod_medicamento;
    private buscarMedicamento buscar_medicamento;
    private buscarMedicamento2 buscar_medicamento2;
    
    private buscarPaciente buscar_paciente;
    private ModificarLote mod_lote;
    private AltaLote alta_lote;

    private ConsultarPruebasPaciente pruebas_paciente;
    private VerPruebasPendientes pruebas_pendientes;
    private AsignarResultadoPruebaHematologia resultado_prueba_hematologia;
    private AsignarResultadoPruebaBioquimicaGeneral resultado_prueba_bioquimica_general;
    private AsignarResultadoPruebaHemostasia resultado_prueba_hemostasia;
    private AsignarResultadoPruebaHormonas resultado_prueba_hormonas;
    private AsignarResultadoPruebaMarcadoresTumorales resultado_prueba_marcadores_tumorales;
    private AsignarResultadoPruebaRadiografia resultado_prueba_radiografia;
    private AsignarResultadoPruebaUrianalisis resultado_prueba_urianalisis;

    private buscarPruebas buscar_pruebas;
    private verGraficas _verGraficas;
    private historialPacienteDetallado historial_paciente_detallado;
    private selectorGraficas _selectorGraficas;

    private altaPrueba alta_prueba;
    private verPruebasPacientes ver_pruebas_pacientes;
    private verResultados ver_resultados;
    private verResultadosRadiografia ver_resultados_radiografia;

    private verListados _verListados;
    private selectorListado _selectorListados;


}
